2

KVOController 是一个简单安全的 KVO(Key-value Observing,键-值 观察)工具,用于 iOS 和 OS X 应用开发中,开源自 facebook。

KVO 是一个在 MVC(Model-View-Controller)应用程序开发中,用于不同模块间交流的一个很有用的技术。 KVOController 是基于 Cocoa 久经考验的 Key-value Observing 实现(implementation)开发而成的。它提供了一个简单现代的 API,同时也是线程安全的。它有如下优点:

  • 使用 Blocks、自定义 Actions 或者 NSKeyValueObserving 回调进行通知.
  • 观测者移除时无异常
  • 控制器 dealloc 时隐式的观测者移除
  • 提升使用 NSKeyValueObservingInitial 的性能
  • 线程安全并提供在观测者恢复时额外的保护Thread-safety with special guards against observer resurrection – rdar://15985376.

更多关于 KVO 的信息,可浏览 Apple 的文档:Introduction to Key-Value Observing

用法

项目中有把 KVOController 用于 iOS 和 OS X 的示例程序。这里是一个简单的使用模式:

// create KVO controller with observer
FBKVOController *KVOController = [FBKVOController controllerWithObserver:self];

// observe clock date property 
[KVOController observe:clock keyPath:@"date" options:NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew block:^(ClockView *clockView, Clock *clock, NSDictionary *change) {

  // update clock view with new value
  clockView.date = change[NSKeyValueChangeNewKey];
}];

尽管上面的例子很简单,但也是一个完整的示范。一个时钟视图创建了一个 KVO 控制器其观察时钟日期的属性。一个代码块回调是用于处理初始化和改变信息推送。在控制器被释放时,KVO 的观察也会无效。

使用要求

KVOController 得益于 Objective-C 技术的发展,包括 ARC 和 weak collections。
它需要:

  • iOS 6 +
  • OS X 10.7 +

安装

使用 CocoaPods,添加下列代码到项目 Podfile 文件:

pod 'KVOController'

更多信息可阅读访问项目主页:https://github.com/facebook/KVOController


编译:Segmentfault


思否编辑部
4.3k 声望116.9k 粉丝

思否编辑部官方账号,欢迎私信投稿、提供线索、沟通反馈。